/**
 * Copyright (c) 2002-2011 旭鸣信息
 * All rights reserved. 
 * File：AuthorizationFace.java
 * History:
 *       2012-1-13: Initially created, tangkf.
 */
package com.xteam.purview.service;

import java.util.List;

import com.xteam.purview.entities.PurviewRoleFunDatarule;
import com.xteam.purview.entities.PurviewUserFunDatarule;
import com.xteam.purview.entities.PurviewUserRole;

/**
 * 授权接口规范定义
 * 用于定义授权操作的相关接口规范
 * @author tangkf  ---2012-1-13
 */
public interface IAuthorizationFace {

	/**
	 *增加一条用户与角色的关联关系
	 * @author tangkf
	 * @param userId 用户ID
	 * @param roleId 角色ID
	 */
	public int addUserRoleRelation(String userId, String[] roleId);

	/**
	 * 通过用户ID与角色ID 删除用户与角色的关联关系
	 * @author tangkf
	 * @param userId 用户ID
	 * @param roleId 角色ID
	 */
	public int delUserRoleRelation(String userId, String roleId);

	/**
	 * 直接为用户授权某功能
	 * @author tangkf  ---2012-1-18
	 * @param userId 用户ID
	 * @param funNodeId 功能ID
	 * @param typeId 权限类型
	 * @return
	 */
	public int addUserFunNodeRelation(String userId, String[] funNodeId, String typeId);
	
	/**
	 * 直接为用户授权某功能
	 * @author tangkf  ---2012-1-18
	 * @param userId 用户ID
	 * @param funNodeId 功能ID
	 * @param typeId 权限类型
	 * @return
	 */
	public List<PurviewUserFunDatarule> getUserFunNodeRelation(String userId);

	/**
	 * 删除对用户的授权关系
	 * @author tangkf  ---2012-1-18
	 * @param userId 用户ID
	 * @param funNodeId 功能ID
	 * @param typeId 权限类型
	 * @return
	 */
	public int delUserFunNodeRelation(String userId, String funNodeId, String typeId);

	/**
	 * 删除对用户的所有授权
	 * @author tangkf  ---2012-1-18
	 * @param userId 用户ID
	 * @param funNodeId 功能ID
	 * @return
	 */
	public int delUserFunNodeRelation(String userId, String funNodeId);

	/**
	 * 直接为角色授权某功能关系
	 * @author tangkf  ---2012-1-18
	 * @param roleId 角色ID
	 * @param funNodeId 功能ID
	 * @param typeId 权限类型
	 * @return
	 */
	public int addRoleFunNodeRelation(String roleId, String[] funNodeId, String typeId);

	/**
	 * 删除对角色的指定权限的授权关系
	 * @author tangkf  ---2012-1-18
	 * @param roleId 角色ID
	 * @param funNodeId 功能ID
	 * @param typeId 权限类型
	 * @return
	 */
	public int delRoleFunNodeRelation(String roleId, String funNodeId, String typeId);

	/**
	 * 删除对角色的所有授权关系
	 * @author tangkf  ---2012-1-18
	 * @param roleId 角色ID
	 * @param funNodeId 功能ID
	 * @return
	 */
	public int delRoleFunNodeRelation(String roleId, String funNodeId);

	/**
	 * 获取角色的功能关系列表
	 * @author tangkf  ---2012-2-9
	 * @param roleId
	 * @return
	 */
	public List<PurviewRoleFunDatarule> getRoleFunNodeRelation(String roleId);

	/**
	 * 获取用户的角色关系列表
	 */
	public List<PurviewUserRole> getUserRoleRelation(String userId);

}
